#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
@Author  : Tartarus
@Description: 实现从源表读取相关数据并存入目标工作表中
"""
import os
import xlwings as xw

app = xw.App(visible=False, add_book=False)

app.display_alerts = False

app.screen_updating = False

# 获取当前路径
os_path = os.getcwd()
print(f'当前所在路径：{os_path}')
print()

# 需要操作的源文件相对路径或绝对路径
print('请输入需要读取源文件的绝对路径:')
source_wb = xw.Book(input(''))

# 目标工作表
print('请输入需要写入目标文件的绝对路径:')
target_wb = xw.Book(input(''))

# 初始化1个空列表 用于存储Sheet的数据
all_data = []


# 提取需要的相关数据
def xlwings_excel():
    try:
        # 遍历源表中所有Sheet
        for sheet in source_wb:
            sheet_read = source_wb.sheets[sheet]

            # 获取数据的位置 假设从表格位置A1至A15开始
            read_value = sheet_read.range('A1:A15').value

            # 将数值添加到列表中
            all_data.append(read_value)

        # 选择将源数据写入到目标哪个表中
        new_sheet_write = target_wb.sheets['测试一号打酱油']

        # 或者将数据写入新的表中根据需求 二选一
        # new_sheet_write = target_wb.sheets.add('测试二号打酱油')

        # 将数据写入目标工作表，假设从A1纵向写入单元格开始
        new_sheet_write.range('A1').options(transpose=True, index=False, header=True).value = all_data

        # 横向写入方法
        # new_sheet_write.range('A1').value = all_data

        # 将数值更改为百分数
        # new_sheet_write.range('A2 : AI15').api.NumberFormat = '0%'.format()

    finally:
        return print("数据已导出")


# 主程序
if __name__ == '__main__':

    # 方法调用
    xlwings_excel()

    # 保存并关闭源文件
    source_wb.save()
    source_wb.close()

    # 保存并关闭目标文件
    target_wb.save()
    target_wb.close()

    # 关闭Excel应用
    app.quit()
